In modern digital communication systems, a data stream that is to be transmitted from one entity to another is typically packetized, and individual packets are transmitted in sequence to the receiving end. At the receiving end, the packets or their underlying data are then assembled in order to regenerate the data stream.
For one reason or another, however, it is possible that one or more of the packets in the transmitted sequence will not arrive successfully at the receiving end. For instance, due to interference or other issues in the communication path, a packet may be lost in transit or its underlying data may be corrupted or modified to the point that the data cannot be recovered by the receiving end.
To help manage such packet loss, a communication system may employ a retransmission scheme in which the receiving end detects the loss of a packet and responsively requests the transmitting end to retransmit the lost packet. For instance, if the packets are sequentially numbered, the receiving end may be configured to detect non-receipt of a particular packet number and to responsively request the transmitting end to retransmit the packet.
Some systems implement this type of retransmission scheme by having the receiving end send a negative acknowledgement (NAK) to the transmitting end for each non-received packet and not send any acknowledgement to the transmitting end for received packets. In this NAK-only implementation, a NAK may identify the non-received packet by packet number, to enable the transmitting end to determine which packet needs to be retransmitted, or a timing scheme could be applied to implicitly correlate a NAK with a particular packet number. In any event, in this implementation, the transmitting end would not take any action to retransmit a packet unless it receives a NAK specifically for that packet.
Other systems implement a retransmission scheme by requiring the receiving end send respectively for each packet of the sequence either a positive acknowledgement (ACK) or a negative acknowledgement (NAK). In such a system, for each packet of the sequence, if the receiving end receives the packet, the receiving end sends an ACK to the transmitting end, and if the receiving end does not receive the packet, the receiving end sends a NAK to the transmitting end. In this implementation, the transmitting end expects to receive either an ACK or a NAK for each packet that it transmits, and absence of both for a given packet may indicate a significant error with respect to the sequence transmission as a whole. Ultimately, this implementation thus provides an extra layer of precaution to help ensure that transmission of the packet sequence is successful.
An example of this latter implementation is the Radio Link Protocol (RLP) packet transmission scheme used in 1xEV-DO cellular communications. There, data that is to be transmitted over an air interface from a cellular base station to cellular wireless client device is divided into a sequence of numbered RLP packets that are transmitted over the air to the cellular wireless client device. Under this protocol, the cellular wireless device is required to transmit over the air to the base station, respectively for each RLP packet of the sequence, either an ACK or a NAK, depending on whether the cellular wireless device successfully receives the packet or not. If the base station receives an ACK for a packet, the base station understands that the packet was successfully received by the cellular wireless device. On the other hand, if the base station receives a NAK for a packet, the base station will retransmit that packet to the cellular wireless device, to allow the cellular wireless device to fully reassemble the data stream.